#ifndef NODOBUFFER_H_
#define NODOBUFFER_H_

#include "../Constantes.h"
#include "../FuncionesUtiles.h"
#include "../Bytes.h"
#include <string.h>

using namespace std;

/*
 * Funcion: representa un nodo que contiene los bytes de un bloque determinado
 * de un archivo.
 */

class NodoBuffer {

private:

	int numBloque;
	estado_buffer estado;

	cantBytes tamanio;
	Bytes datos;

public:

	/*
	 * Pre: -
	 * Pos: crea una nueva instancia.
	 */
	NodoBuffer(int numBloque, int tamanio, Bytes dato);

	/*
	 * Pre: -
	 * Pos: devuelve el nro de bloque asociado.
	 */
	int getNumBloque() const;

	/*
	 * Pre: -
	 * Pos: setea el nro de bloque.
	 */
	bool setNumBloque(int numNuevo);

	/*
	 * Pre: -
	 * Pos: devuelve el estado del Nodo.
	 */
	estado_buffer getEstado() const;

	/*
	 * Pre: -
	 * Pos: setea el dato del nodo.
	 */
	bool setDatos(Bytes datoNuevo);

	/*
	 * Pre: -
	 * Pos: devuelve el dato almacenado en el nodo.
	 */
	Bytes getDatos();

	/*
	 * Pre: -
	 * Pos: setea el estado del Nodo.
	 */
	void setEstado(estado_buffer estado);

	/*
	 * Pre: -
	 * Pos: libera los recursos instanciados.
	 */
	virtual ~NodoBuffer();

	/*
	 * Pre: -
	 * Pos: devuelve una cadena que representa al estado del nodo.
	 */
	string toString();
};

#endif /* NODOBUFFER_H_ */
